____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Java-Syntax
part 13/15 Β· 52.8 KB total
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Im Gegensatz zu anderen Programmiersprachen, wie beispielsweise C, ist die Reihenfolge der Auswertung von AusdrΓΌcken in Java bereits in der Sprachdefinition festgelegt: BinΓ€re infix-Operatoren gleichen Rangs, die keine Zuweisungsoperatoren sind, werden immer von links nach rechts ausgewertet. AuΓerdem gilt β wie in C auch β dass die Auswertung von logischen AusdrΓΌcken verkΓΌrzt werden kann, wenn das Ergebnis bereits feststeht. Im folgenden Beispiel wird also garantiert zuerst ΓΌberprΓΌft, ob βobjektβ nicht βnullβ ist. Ist dieser Teilausdruck false (also objekt ist eine Nullreferenz), wird der rechte Operand von && gar nicht ausgewertet, d. h. die Methode inOrdnung() wird nicht gesucht oder gar gerufen. Somit ist der Gesamtausdruck sicher und kann niemals eine βNullPointerExceptionβ verursachen. (Eine βNullPointerExceptionβ wird in Java immer dann geworfen, wenn versucht wird, die Objektreferenz βnullβ aufzulΓΆsen.)
if (objekt != null && objekt.inOrdnung()) {
System.out.println("in Ordnung");
}
else {
System.out.println("ungeprΓΌft oder PrΓΌfung misslungen");
}
Werden statt der logischen Operatoren && und || die Bit-Operatoren & und | verwendet, so mΓΌssen beide Teilergebnisse bitweise verknΓΌpft werden und die Verarbeitung kann nicht beim linken Ausdruck abbrechen, falls der false ist. Hat also die Variable objekt den Wert null, so versucht die Java-VM, den aus dem ersten Ausdruck resultierenden Wert false mit dem Ergebnis des zweiten Ausdrucks bitweise zu verknΓΌpfen. Um den zweiten Ausdruck zu berechnen, versucht die VM objekt zu dereferenzieren und wirft eine NullPointerException.
Funktionale Schnittstellen und Lambda-AusdrΓΌcke
Ein Lambda-Ausdruck ist eine namenlose (anonyme) Methode, die (als Objekt) weitergegeben werden kann. Lambda-AusdrΓΌcke beschreiben also Funktionsobjekte. Der Begriff geht auf den Lambda-KalkΓΌl zurΓΌck, eine formale Sprache zur Untersuchung von Funktionen (siehe auch funktionale Programmierung). Lambda-AusdrΓΌcke in Java gibt es seit Java 8 und umfassen Parameterlisten, einen RΓΌckgabetyp und einen Body:
(<Datentyp> <Variablenbezeichner>,...,<Datentyp> <Variablenbezeichner>) -> <Anweisungsblock>
(<Datentyp> <Variablenbezeichner>,...,<Datentyp> <Variablenbezeichner>) -> <Ausdruck>
(<Variablenbezeichner>,...,<Variablenbezeichner>) -> <Anweisungsblock>
(<Variablenbezeichner>,...,<Variablenbezeichner>) -> <Ausdruck>
Die runden Klammern kΓΆnnen weggelassen werden, wenn die Anzahl der enthaltenen Elemente genau eins ist. Die Angabe der Parametertypen ist nur dann erforderlich, wenn der Compiler sie nicht selbst aus dem Kontext des Ausdrucks ableiten kann.cite-ref-5[3] Eine Funktion, die die Summe von zwei Argumenten liefert, lΓ€sst sich folgendermaΓen ausdrΓΌcken:
(i,j) -> i+j
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ